package main

import (
	"flag"
	"fmt"
)

//os.Args 用来存储所有命令行参数，是一个string的切片
//命令行参数只能严格按顺序

//flag包解析命令行参数
//go build xxx.go -> xxx.exe
//程序运行时按xxx.exe -u aaa -p bbb -h ccc -port 0000 这种方式，无需按照输入顺序
//flag.StringVar(&参数, 指定参数, 默认参数, 参数说明)
//	flag.StringVar(&user, "u", "", "用户名")
//	&user 为输入用户名， u 为命令行参数 "-u" ，""默认为空
//flag.IntVar(&参数, 指定参数, 默认参数, 参数说明)  // 默认参数需为整型
func main() {
	var (
		user string
		pwd string
		host string
		port int
	)

	flag.StringVar(&user, "u", "", "用户名")
	flag.StringVar(&pwd, "p", "", "密码")
	flag.StringVar(&host, "h", "localhost", "主机")
	flag.IntVar(&port, "port", 10000, "端口")

	// 解析注册的flag，必须调用
	flag.Parse()
	fmt.Println(user, pwd, host, port)
}
